// /**
//  * Created by PanJiaChen on 16/11/18.
//  */

// /**
//  * Parse the time to string
//  * @param {(Object|string|number)} time
//  * @param {string} cFormat
//  * @returns {string | null}
//  */
// export function parseTime(time, cFormat) {
//     if (arguments.length === 0 || !time) {
//         return null
//     }
//     const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
//     let date
//     if (typeof time === 'object') {
//         date = time
//     } else {
//         if ((typeof time === 'string')) {
//             if ((/^[0-9]+$/.test(time))) {
//                 // support "1548221490638"
//                 time = parseInt(time)
//             } else {
//                 // support safari
//                 // https://stackoverflow.com/questions/4310953/invalid-date-in-safari
//                 time = time.replace(new RegExp(/-/gm), '/')
//             }
//         }

//         if ((typeof time === 'number') && (time.toString().length === 10)) {
//             time = time * 1000
//         }
//         date = new Date(time)
//     }
//     const formatObj = {
//         y: date.getFullYear(),
//         m: date.getMonth() + 1,
//         d: date.getDate(),
//         h: date.getHours(),
//         i: date.getMinutes(),
//         s: date.getSeconds(),
//         a: date.getDay()
//     }
//     const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
//         const value = formatObj[key]
//             // Note: getDay() returns 0 on Sunday
//         if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
//         return value.toString().padStart(2, '0')
//     })
//     return time_str
// }

// /**
//  * @param {number} time
//  * @param {string} option
//  * @returns {string}
//  */
// export function formatTime(time, option) {
//     if (('' + time).length === 10) {
//         time = parseInt(time) * 1000
//     } else {
//         time = +time
//     }
//     const d = new Date(time)
//     const now = Date.now()

//     const diff = (now - d) / 1000

//     if (diff < 30) {
//         return '刚刚'
//     } else if (diff < 3600) {
//         // less 1 hour
//         return Math.ceil(diff / 60) + '分钟前'
//     } else if (diff < 3600 * 24) {
//         return Math.ceil(diff / 3600) + '小时前'
//     } else if (diff < 3600 * 24 * 2) {
//         return '1天前'
//     }
//     if (option) {
//         return parseTime(time, option)
//     } else {
//         return (
//             d.getMonth() +
//             1 +
//             '月' +
//             d.getDate() +
//             '日' +
//             d.getHours() +
//             '时' +
//             d.getMinutes() +
//             '分'
//         )
//     }
// }

// /**
//  * @param {string} url
//  * @returns {Object}
//  */
// export function param2Obj(url) {
//     const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
//     if (!search) {
//         return {}
//     }
//     const obj = {}
//     const searchArr = search.split('&')
//     searchArr.forEach(v => {
//         const index = v.indexOf('=')
//         if (index !== -1) {
//             const name = v.substring(0, index)
//             const val = v.substring(index + 1, v.length)
//             obj[name] = val
//         }
//     })
//     return obj
// }

export function tranListToTreeData(list, rootValue) { // list: 整个数组, rootValue本次要查找的目标id -> 此函数为了找到rootValue目标id的下属们
    const treeData = [] // 装下属对象的
    list.forEach(item => {
        if (item.pid === rootValue) { // 当前对象pid符合, 继续递归调用查找它的下属
            const children = tranListToTreeData(list, item.id) // 返回item对象下属数组
            if (children.length) {
                item.children = children // 为item添加children属性保存下属数组
            }
            treeData.push(item) // 把当前对象保存到数组里, 继续遍历
        }
    })
    return treeData // 遍历结束, rootValue的id对应下属们收集成功, 返回给上一次递归调用children, 加到父级对象的children属性下
}